/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BL;

import BE.Seccion;
import BE.SeccionPt;
import DAO.SeccionDao;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author CarLita
 */
public class SeccionBl {
    SeccionDao seccionDao;

    public SeccionBl(){
        seccionDao = new SeccionDao();
    }

    public Object[] buscarPorIdPlantilla(Integer idPlantillaPt) {
        List l = seccionDao.buscarPorIdPlantilla(idPlantillaPt);
        return ordenarListaSecciones(l);
    }

    public int grabar(Seccion seccion) {
        return seccionDao.grabar(seccion);
    }

    public Seccion buscarPorId(int idSeccion) {
        return seccionDao.buscarPorId(idSeccion);
    }
   
    public List<Seccion> buscarNivelesPorPlantilla(int idPlantilla, int nivel, int secSuperior) {
        return seccionDao.buscarNivelesPorPlantilla(idPlantilla, nivel, secSuperior);
    }

    private Object[] ordenarListaSecciones(List l) {
        int nElementos = l.size();
        Object[] lista = l.toArray();
        
        //ordenamiento por insercion lineal
        int i = 1;
        int j;
        Seccion sAux = null;        
        while (i< nElementos){
            sAux = (Seccion)lista[i];
            j =i;
            while (j>0 && comparar(sAux, (Seccion)lista[j-1])){
                lista[j]= lista[j-1];
                j--;
            }            
            lista[j] = sAux;
            i++;
        }
        
        return lista;
    }

    private boolean comparar(Seccion sAux, Seccion seccion) {
        int nSAux = sAux.getCorrelativo();
        nSAux = sAux.getCorrelativoSuperior1()>0?sAux.getCorrelativoSuperior1()*10 + nSAux: nSAux*10;
        nSAux = sAux.getCorrelativoSuperior2()>0?sAux.getCorrelativoSuperior2()*100 + nSAux: nSAux*10;
        
        int nSeccion = seccion.getCorrelativo();
        nSeccion = seccion.getCorrelativoSuperior1()>0?seccion.getCorrelativoSuperior1()*10 + nSeccion: nSeccion*10;
        nSeccion = seccion.getCorrelativoSuperior2()>0?seccion.getCorrelativoSuperior2()*100 + nSeccion: nSeccion*10;
        
        System.out.println("Indices: "+nSAux +" y "+ nSeccion);
        return nSAux<nSeccion;
    }


}
